package cn.com.surker.production.entity;

import cn.com.surker.base.BaseEntity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;

import java.io.Serializable;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 生产派单表
 * </p>
 *
 * @author admin
 * @since 2024-09-26
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class ProductionIndentDispatch extends BaseEntity implements Serializable {

	private static final long serialVersionUID = 1L;

	/**
	 * 标识
	 */
	@TableId(value = "id", type = IdType.AUTO)
	private Long id;

	/**
	 * 公司ID
	 */
	private Long orgId;

	/**
	 * 派单编码,如果两个单子是补量,则表示code为同一个
	 */
	private String code;

	/**
	 * 任务单
	 */
	private Long indentId;

	/**
	 * 生产线
	 */
	private Long lineId;

	/**
	 * 上传的配合比记录id,关联lab_expend_upload表
	 */
	private Long labExpendId;
	/**
	 * 上传类型,0表示砼;1表示砂浆
	 */
	private Integer uploadType;

	/**
	 * 上传方量
	 */
	private Double uploadStere;

	/**
	 * 上传时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date uploadTime;

	/**
	 * 砂浆是否累计
	 */
	private Integer sandAccount;

	/**
	 * 泵送设备
	 */
	private Long pumpDeviceId;

	/**
	 * 罐车
	 */
	private Long carId;

	/**
	 * 司机
	 */
	private String driver;

	/**
	 * 实际生产方量
	 */
	private Double proStere;

	/**
	 * 生产时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date proTime;

	/**
	 * 生产状态,关联枚举InvoiceProcessEnum
	 */
	private Integer proStatus;

	/**
	 * 发货单id,一个发货单对应多个id
	 */
	private Long invoiceId;

	/**
	 * 对应工控机的发货单id
	 */
	private String controlId;


	public void initCode(String orgCode) {
		String prefix = "PD" + orgCode;
		String invCode = super.baseInitCode(prefix);
		this.code = invCode;
	}

	/**
	 * 工控机发货单的生产状态,暂时使用枚举ControlProStatusEnum
	 */
	private Integer controlProStatus;

	/**
	 * 任务单编码以下四个字段为上传工控机临时用
	 */
	@TableField(exist = false)
	private String indentCode;

	//	配合比
	@TableField(exist = false)
	private String recipe;

	/**
	 * 车辆自编号
	 */
	@TableField(exist = false)
	private String carCode;

	//	总车次
	@TableField(exist = false)
	private Integer totalCar;
	//	当前总方量
	@TableField(exist = false)
	private Double totalStere;
}
